<template><div><h2 id="框架结构" tabindex="-1"><a class="header-anchor" href="#框架结构"><span>框架结构</span></a></h2>
<p>Yii 中文文档 /</p>
<h2 id="框架结构-1" tabindex="-1"><a class="header-anchor" href="#框架结构-1"><span>框架结构</span></a></h2>
<h2 id="概述" tabindex="-1"><a class="header-anchor" href="#概述"><span>概述</span></a></h2>
<p>Yii 2 高级项目模板是一个最基本的 <a href="http://www.yiiframework.com/" target="_blank" rel="noopener noreferrer">Yii 2</a> 应用程序，用于开发具有多层的复杂的 Web 应用程序。</p>
<p>模板包括三个层：前台，后台和控制台，每个都是单独的 Yii 应用程序。该模板设计用于在团队开发环境中工作，它支持在不同环境（<code v-pre>development</code> 、<code v-pre>production</code> 和 <code v-pre>test</code>）中部署应用程序。它还有一些其他功能，并提供了必要的开箱即用的数据库操作，注册和重置密码等功能。</p>
<h2 id="模板目录" tabindex="-1"><a class="header-anchor" href="#模板目录"><span>模板目录</span></a></h2>
<p>应用中最重要的目录和文件（假设应用根目录是 <code v-pre>advanced</code>）：</p>
<div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre v-pre class="language-php"><code><span class="line">advanced<span class="token operator">/</span>                   应用根目录</span>
<span class="line">    backend<span class="token operator">/</span>                后台应用</span>
<span class="line">        assets<span class="token operator">/</span>             后台的前端资源包配置</span>
<span class="line">        config<span class="token operator">/</span>             后台配置</span>
<span class="line">        controllers<span class="token operator">/</span>        后台控制器类</span>
<span class="line">        models<span class="token operator">/</span>             后台模型类</span>
<span class="line">        runtime<span class="token operator">/</span>            后台运行时生成的文件，例如日志、缓存等</span>
<span class="line">        tests<span class="token operator">/</span>              后台测试相关</span>
<span class="line">        views<span class="token operator">/</span>              后台的视图文件</span>
<span class="line">        web<span class="token operator">/</span>                后台 Web 应用根目录，包含 Web 入口文件</span>
<span class="line">            assets<span class="token operator">/</span>         后台 Yii 发布的资源文件（js、css等）</span>
<span class="line">            index<span class="token operator">.</span>php       后台应用入口文件</span>
<span class="line"></span>
<span class="line">    common<span class="token operator">/</span>                 公共目录</span>
<span class="line">        config<span class="token operator">/</span>             公共配置</span>
<span class="line">        fixtures<span class="token operator">/</span>           公共测试夹具</span>
<span class="line">        mail<span class="token operator">/</span>               公共邮箱模板</span>
<span class="line">        models<span class="token operator">/</span>             公共模型类</span>
<span class="line">        tests<span class="token operator">/</span>              公共测试相关</span>
<span class="line">        widgets<span class="token operator">/</span>            公共前端小部件</span>
<span class="line"></span>
<span class="line">    console<span class="token operator">/</span>                控制台应用</span>
<span class="line">        config<span class="token operator">/</span>             控制台配置</span>
<span class="line">        controllers<span class="token operator">/</span>        控制台控制器类</span>
<span class="line">        migrations<span class="token operator">/</span>         控制台数据库迁移目录</span>
<span class="line">        models<span class="token operator">/</span>             控制台模型类</span>
<span class="line">        runtime<span class="token operator">/</span>            控制台运行时生成的文件，例如日志、缓存等</span>
<span class="line"></span>
<span class="line">    environments<span class="token operator">/</span>           环境配置</span>
<span class="line">        dev<span class="token operator">/</span>                开发环境 init 时，自动写入的文件集</span>
<span class="line">        prod<span class="token operator">/</span>               生成环境 init 时，自动写入的文件集</span>
<span class="line">        index<span class="token operator">.</span>php           本地于特定环境的文件清单</span>
<span class="line"></span>
<span class="line">    frontend<span class="token operator">/</span>               前台目录（参考backend）</span>
<span class="line"></span>
<span class="line">    vagrant<span class="token operator">/</span>                虚拟机相关配置</span>
<span class="line">    vendor<span class="token operator">/</span>                 已经安装的 Composer 包，包括 Yii 框架</span>
<span class="line">    composer<span class="token operator">.</span>json           Composer 配置文件<span class="token punctuation">,</span> 描述包信息</span>
<span class="line">    <span class="token operator">.</span>gitignore              git 版本系统忽略的目录列表</span>
<span class="line">    init                    初始化脚本</span>
<span class="line">    init<span class="token operator">.</span>bat                初始化脚本（Windows）</span>
<span class="line">    <span class="token constant">LICENSE</span><span class="token operator">.</span>md              许可信息，把你的项目许可证放到这里，特别是开源醒目</span>
<span class="line">    <span class="token constant">README</span><span class="token operator">.</span>md               安装模板的基本信息。可将其替换为有关您的项目及其安装的信息</span>
<span class="line">    requirements<span class="token operator">.</span>php        安装使用 Yii 需求检查器</span>
<span class="line">    yii<span class="token operator">.</span>bat                 Yii命令行引导脚本（Windows）</span>
<span class="line"></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="与基本模板区别" tabindex="-1"><a class="header-anchor" href="#与基本模板区别"><span>与基本模板区别</span></a></h2>
<p>下表比较了高级项目模板和基本项目模板之间的区别：</p>
<table>
<thead>
<tr>
<th>特性</th>
<th>基本项目模版</th>
<th>高级项目模版</th>
</tr>
</thead>
<tbody>
<tr>
<td>项目结构</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>Site controller</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>用户 登录/退出</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>表单</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>数据库链接</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>命令行操作</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>资源包</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>代码测试</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>Bootstrap</td>
<td>✓</td>
<td>✓</td>
</tr>
<tr>
<td>前台 以及 后台 应用</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>使用用户模型</td>
<td></td>
<td>✓</td>
</tr>
<tr>
<td>用户注册以及密码重置</td>
<td></td>
<td>✓</td>
</tr>
</tbody>
</table>
<h2 id="预定义路径别名" tabindex="-1"><a class="header-anchor" href="#预定义路径别名"><span>预定义路径别名</span></a></h2>
<ul>
<li><code v-pre>@yii</code> - 框架目录。</li>
<li><code v-pre>@app</code> - 当前运行的应用程序的基本路径。</li>
<li><code v-pre>@common</code> - 公共目录。</li>
<li><code v-pre>@frontend</code> - 前台 Web 应用程序目录。</li>
<li><code v-pre>@backend</code> - 后台 Web 应用程序目录。</li>
<li><code v-pre>@console</code> - 控制台目录。</li>
<li><code v-pre>@runtime</code> - 当前正在运行的Web应用程序的 runtime 目录。</li>
<li><code v-pre>@vendor</code> - Composer vendor 目录.</li>
<li><code v-pre>@bower</code> - vendor 目录下的 <a href="http://bower.io/" target="_blank" rel="noopener noreferrer">bower packages</a>.</li>
<li><code v-pre>@npm</code> - vendor 目录下的 <a href="https://www.npmjs.org/" target="_blank" rel="noopener noreferrer">npm packages</a>.</li>
<li><code v-pre>@web</code> - 当前运行的Web应用程序的 base URL。</li>
<li><code v-pre>@webroot</code> - 当前运行的Web应用程序的 web 根目录。</li>
</ul>
<p>特定于高级应用程序的目录结构的别名<br>
(<code v-pre>@common</code>, <code v-pre>@frontend</code>, <code v-pre>@backend</code>, 以及 <code v-pre>@console</code>) 在 <code v-pre>common/config/bootstrap.php</code> 文件中定义.</p>
<h2 id="应用程序概述" tabindex="-1"><a class="header-anchor" href="#应用程序概述"><span>应用程序概述</span></a></h2>
<p>高级模板中内置有 3 个应用程序：前台（<code v-pre>frontend</code>），后台（<code v-pre>backend</code>）和控制台（<code v-pre>console</code>）。</p>
<ul>
<li>前台：通常是呈现项目本身到最终用户，也是业务中常说的 C 端。</li>
<li>后台：通常是一个管理面板或者 CMS ，用来做分析和其他诸如此类的功能。</li>
<li>控制台：通常用于 Linux 中的 cron（计划任务）作业脚本和低级服务器管理，它也在应用程序部署期间使用，并处理 migrate（数据迁移）和资源包等。</li>
</ul>
<p>还有一个 <code v-pre>common</code> 目录，其中包含多个应用程序使用的文件。 例如，<code v-pre>User</code> Model。</p>
<p>前台和后台都是 Web 应用程序，并且都包含 <code v-pre>web</code> 目录，这个目录就是 web 服务器要映射域名的目录。</p>
<p>每个应用程序都有自己的命名空间和别名对应其名称。这同样适用于公共目录。</p>
<blockquote>
<p>💖喜欢本文档的，欢迎点赞、收藏、留言或转发，谢谢支持！<br>
作者邮箱：zhuzixian520@126.com，github地址：<a href="https://github.com/zhuzixian520" target="_blank" rel="noopener noreferrer">github.com/zhuzixian520</a></p>
</blockquote>
</div></template>


